package com.tedu.oop.day6;

/**
 * 汽车设计综合案例---OOP
 * 1.分析事物，得出属性和功能(方法)
 * 2.提取类的共同点，抽取形成父类
 * 3.子类如果不满意，可以重写父类中的方法
 * 4.封装某些类的属性，不能继承，提供set get 方法
 */
public class Test_ExtendsDesignCar {
    public static void main(String[] args) {
        Car c=new Car();

        System.out.println("--------------------");

        BMW b=new BMW();
        b.setBrand("宝马");
        b.setColor("白色");
        b.setPrice(799999);
        b.start();
        b.stop();

        System.out.println("--------------------");

        Audi a=new Audi();
        a.setBrand("奥迪");
        a.setColor("黑色");
        a.setPrice(899999);
        a.start();
        a.stop();

        System.out.println("--------------------");
        Car c2=new BMW();

        System.out.println("--------------------");
        Car c3=new Audi();

    }
}

class Car{
    private String brand;
    private String color;
    private int price;

    //私方法有化
    public void start(){
        System.out.println(color+brand+"汽车启动！");
    }
    //私方法有化
    public void stop(){
        System.out.println(color+brand+"汽车自动泊车!");
    }
 /*   //定义公共方法调用私有方法
    public void goStreet(){
        start();
        stop();
    }*/

    public Car(){

    }

    public Car(String brand, String color, int price) {
        this.brand = brand;
        this.color = color;
        this.price = price;
    }

    //封装并提供get set 方法
    public String getBrand() {
        return brand;
    }
    public void setBrand(String brand) {
        this.brand = brand;
    }
    public String getColor() {
        return color;
    }
    public void setColor(String color) {
        this.color = color;
    }
    public int getPrice() {
        return price;
    }
    public void setPrice(int price) {
        this.price = price;
    }
}

class BMW extends Car {
    public void start(){
        //super.start();
        System.out.println("宝马启动加速!");
    }
}
class Audi extends Car{
    public void stop(){
        //super.stop();
        System.out.println("奥迪全自动智能泊车");
    }
}

